﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Utils;

namespace Logic
{
    public class Comisiones
    {
        private Data.Comisiones _hnd_comisiones = new Data.Comisiones();
        private Data.Planes _hnd_planes = new Data.Planes();

        private Data.Comisiones HndComisiones
        {
            get { return _hnd_comisiones; }
        }
        private Data.Planes HndPlanes
        {
            get { return _hnd_planes; }
        }

        public Entities.Comision GetByID(int id)
        {
            return HndComisiones.GetByID(id);
        }

        public Entities.Collections.ComisionesCollection GetByPlan(Entities.Plan plan)
        {
            return HndComisiones.GetByPlan(plan);
        }

        public Entities.Collections.ComisionesCollection GetCollection()
        {
            return HndComisiones.GetCollection();
        }

        private string Validate(Entities.Comision instance)
        {
            StringBuilder b = new StringBuilder();

            if (instance.Nombre.Trim().IsEmptyString()) b.AppendLine("* No ingresó el nombre de la comisión");
            else if (!instance.Nombre.Trim().IsLengthBetween(1, 255)) b.AppendLine("* El nombre de la comisión debe tener entre 1 y 255 caracteres");
            if (!instance.AnoEspecialidad.IsBetween(1, 5)) b.AppendLine("* El año de la especialidad de la comisión debe estar comprendido entre 1 y 5");
            if (HndPlanes.GetByID(instance.IDPlan) == null) b.AppendLine("* La comisión no tiene un plan asociado");

            return b.ToString();
        }

        public string Save(Entities.Comision instance)
        {
            string r = Validate(instance);

            if (r.IsEmptyString())
            {
                instance.Nombre = instance.Nombre.Trim();
                HndComisiones.Save(instance);
            }

            return r;
        }

        public void Delete(Entities.Comision instance)
        {
            HndComisiones.Delete(instance);
        }
    }
}
